package ch06.shili.shili08;

import java.lang.reflect.Field;

/**
 * @author 茜茜
 * @date 2024-11-22 14:29
 */
public class AccessPersonFields {
    public static void main(String[] args) {
        try {
            // 通过反射加载一个Person实例
            Class cls = Class.forName("ch01.shili01.Person");
            Object person = cls.newInstance();
            // 要调用类中的方法和属性，对象名.方法 对象名.属性
            // 获取name属性
            Field name = cls.getDeclaredField("name");
            // name属性为private，这里已超出其访问范围，不能直接访问
            // 通过setAccessible方法，设定为可以访问
            name.setAccessible(true);
            // 先取值看一下
            System.out.println("赋值前的name：" + name.get(person));
            // 为name属性赋值
            name.set(person, "New person"); // 相当于调用了setName("New Person")
            // 展示一下赋值效果
            System.out.println("赋值后的name：" + name.get(person));

        } catch (Exception e){
            e.printStackTrace();
        }
    }
}
